www.gusucode.com > 基于VBLAST-OFDM的MATLAB SIMULATION,图形化界面,并且给出了各仿真图 > 基于VBLAST-OFDM的MATLAB SIMULATION,图形化界面,并且给出了各仿真图/vblast-ofdm simulation/transmitter.m

    % Generates transmitted signal for one packet.

function [tx_signal,inf_bits, tx_bits] = transmitter(SimulationParameters);

global SimulationConstants;

%number of transmit antennas
modulation=SimulationParameters.ModulationType;
if modulation     == 'BPSK '
    Bits=1;
elseif modulation == 'QPSK '
    Bits=2;
end

num_data_carriers=SimulationConstants.NumDataSubc;

% Generate the information bits
if SimulationParameters.ZeroPad
    inf_bits=randn(1,num_data_carriers*Bits*10)> 0;
else
    inf_bits=randn(1,SimulationParameters.FFTPoints*Bits*10)> 0;
end

save length(inf_bits);

% Convolutional encoding
coded_bit_stream = tx_conv_encoder(inf_bits);
   
%Puncturing   
tx_bits = tx_puncture(coded_bit_stream, SimulationParameters.ConvCodeRate);

%no vblast option
if SimulationParameters.VBLAST~=1
    
% Generate number bits that is an integer multiple of OFDM symbols
rdy_to_mod_bits = tx_round_ofdm_syms(tx_bits, SimulationParameters);
    
%Interleave padded bit stream 
if SimulationParameters.InterleavingBits == 1 & SimulationParameters.ZeroPad~=1
   rdy_to_mod_bits = tx_interleaver(rdy_to_mod_bits, SimulationParameters);
end

%Modulate
mod_syms_prov = tx_modulate(rdy_to_mod_bits, SimulationParameters.ModulationType);

% Transmit diversity
mod_syms = tx_diversity(mod_syms_prov,SimulationParameters);


% Tx symbols to time domainclc

time_syms = tx_convert_to_time(mod_syms,SimulationParameters);

% Add cyclic prefix
time_signal = tx_add_cyclic_prefix(time_syms,SimulationParameters);

% Construction of the preamble 
preamble = tx_gen_preamble(SimulationParameters);

%check if there is zero padding
if SimulationParameters.ZeroPad~=1
    numdatasubc=1;
else
    numdatasubc=SimulationConstants.NumDataSubc;
end

% Concatenate preamble and data part and normalize the average signal power to 1
tx_signal = [preamble time_signal]*SimulationParameters.FFTPoints/sqrt(numdatasubc)/sqrt(size(time_signal,1));

else % go vblast
    
% # of transmit antennas    
M=SimulationParameters.M;
    
% Generate number bits that is an integer multiple of OFDM symbols
rdy_to_mod_bits = tx_round_ofdm_syms(tx_bits, SimulationParameters);

%Modulate
mod_syms_prov = tx_modulate(rdy_to_mod_bits, SimulationParameters.ModulationType);

% Transmit diversity
mod_syms = tx_diversity_vblast(mod_syms_prov, SimulationParameters);

% Tx symbols to time domain
time_syms = tx_convert_to_time(mod_syms,SimulationParameters);

% Add cyclic prefix
time_signal = tx_add_cyclic_prefix(time_syms,SimulationParameters);

% Construction of the preamble(though not used in this simulator, channel
% estimation facility is provided for the user with vblast).
preamble = tx_gen_preamble_vblast(SimulationParameters);

%check if there is zero padding
if SimulationParameters.ZeroPad~=1
    numdatasubc=1;
else
    numdatasubc=SimulationConstants.NumDataSubc;
end

% Concatenate preamble and data part and normalize the average signal power to 1
tx_signal = [preamble time_signal]*SimulationParameters.FFTPoints/sqrt(numdatasubc)/sqrt(M);
end